ديف أوبس

ضبط OPcache لأداء Apache

ضبط OPcache للتخزين المؤقت على خادم ويب Apache: شرح شامل ومفصل

تُعتبر تحسينات أداء تطبيقات الويب من العوامل الأساسية التي تسعى جميع المؤسسات والمطورين لتحقيقها، خاصة عند التعامل مع تطبيقات PHP التي تُعد من أشهر لغات البرمجة لتطوير الويب. من بين الأدوات المهمة التي تسهم في تحسين سرعة تنفيذ صفحات PHP وتقليل زمن استجابة الخادم، يأتي OPcache كحل متقدم وفعال للتخزين المؤقت (caching) لملفات الكود البرمجي PHP في الذاكرة. في هذا المقال الموسع، سيتم التطرق إلى شرح شامل لكيفية ضبط OPcache على خادم ويب يعمل بـ Apache، بما يضمن تحسين الأداء وتعزيز استقرار النظام.


ما هو OPcache ولماذا يُستخدم؟

OPcache هو امتداد (Extension) لوظائف PHP، أُضيف رسميًا إلى PHP اعتبارًا من الإصدار 5.5، ويهدف بشكل رئيسي إلى تحسين أداء تنفيذ سكربتات PHP عبر تخزين نسخة مترجمة (Compiled) من كود PHP في ذاكرة الوصول العشوائي (RAM) بدلاً من إعادة تفسير الكود في كل طلب جديد.

بشكل تقني، عندما يطلب المستخدم صفحة PHP، يقوم PHP بقراءة الملف النصي، ثم تفسيره وتحويله إلى “Bytecode” قبل التنفيذ. هذه العملية تستهلك وقتًا وموارد خادم. OPcache يحل هذه المشكلة عن طريق تخزين الـ Bytecode المُترجم في الذاكرة بحيث يتم إعادة استخدامه عند الطلبات اللاحقة، مما يقلل زمن تحميل الصفحات بشكل ملحوظ.


أهمية ضبط OPcache بشكل صحيح على خادم Apache

خادم Apache هو من أكثر خوادم الويب استخدامًا مع PHP، وعندما يُستخدم OPcache معه، يمكن تحقيق مكاسب كبيرة في السرعة. لكن عدم ضبط OPcache بشكل دقيق قد يؤدي إلى:

  • استهلاك مفرط للذاكرة مما يسبب بطء النظام.

  • تخزين مؤقت غير فعّال يؤدي إلى تقديم نسخ قديمة من الصفحات.

  • مشكلات في توافق الأكواد عند تحديث السكربتات.

  • استقرار منخفض للنظام في بيئات الإنتاج.

لذلك، فإن ضبط OPcache بشكل احترافي يضمن:

  • استغلال أمثل لموارد النظام.

  • تحسين زمن استجابة التطبيقات.

  • استقرار وموثوقية في الأداء.


المتطلبات الأساسية لتشغيل OPcache مع Apache

قبل البدء بعملية الضبط، يجب التأكد من توافر بعض الأمور:

  1. إصدار PHP: يفضل استخدام PHP 7.0 أو أحدث، لأن OPcache أصبح مدمجًا في الإصدارات الحديثة، مع تحسينات مستمرة في الأداء.

  2. تمكين امتداد OPcache: يجب التأكد من أن ملف إعدادات PHP (php.ini) يحتوي على تحميل OPcache.

  3. إمكانية تعديل إعدادات PHP: الوصول إلى ملفات إعدادات PHP وخادم Apache ضروري لتخصيص القيم.


خطوات تفعيل OPcache وضبطه على خادم Apache

1. التحقق من تمكين OPcache

افتح ملف إعدادات PHP الخاص بخادم Apache، غالبًا ما يكون في المسار:

  • على أنظمة Linux: /etc/php/7.x/apache2/php.ini

  • على أنظمة Windows: مسار تثبيت PHP، مثل C:\php\php.ini

ابحث عن السطر التالي أو أضفه إذا لم يكن موجودًا:

ini
zend_extension=opcache.so

في Windows قد يكون:

ini
zend_extension=php_opcache.dll

ثم تحقق من تفعيل OPcache عبر:

ini
opcache.enable=1

2. إعداد معلمات الذاكرة والتخزين

تحديد حجم الذاكرة المخصصة لتخزين الـ Bytecode مهم جدًا، فهو يؤثر على عدد السكربتات التي يمكن تخزينها في الذاكرة.

ini
opcache.memory_consumption=128

القيمة 128 تعني 128 ميجابايت، وهي مناسبة لمعظم المواقع المتوسطة والكبيرة. يمكن زيادة هذه القيمة للمواقع الكبيرة.

3. الحد الأقصى لعدد الملفات المخزنة مؤقتًا

يمكن ضبط عدد الملفات التي يمكن لـ OPcache تخزينها من خلال:

ini
opcache.max_accelerated_files=10000

القيمة 10000 مناسبة لمعظم تطبيقات الويب. يمكن تعديلها حسب حجم المشروع.

4. فترة إعادة التحقق من الملفات

لتجنب مشكلة تقديم ملفات قديمة بعد تحديث الكود، يمكن ضبط فترة تحقق OPcache من تحديث الملفات:

ini
opcache.revalidate_freq=2

تعني أن OPcache يعيد التحقق من تحديث الملفات كل ثانيتين.

5. تمكين الإبلاغ عن الأخطاء

لمراقبة حالة OPcache، يمكن تفعيل عرض الأخطاء والتنبيهات عبر:

ini
opcache.enable_cli=1 opcache.log_verbosity_level=1

جدول يوضح أهم إعدادات OPcache مع شرحها

الإعداد القيمة النموذجية الوصف
zend_extension opcache.so تحميل امتداد OPcache.
opcache.enable 1 تفعيل OPcache على الويب.
opcache.memory_consumption 128 حجم الذاكرة (بميجابايت) المخصصة للتخزين المؤقت.
opcache.max_accelerated_files 10000 الحد الأقصى لعدد ملفات PHP التي سيتم تخزينها مؤقتًا.
opcache.revalidate_freq 2 فترة التحقق من تحديث الملفات (بالثواني).
opcache.enable_cli 1 تفعيل OPcache في أوامر سطر الأوامر (CLI).
opcache.log_verbosity_level 1 مستوى تفصيل سجل الأخطاء والتنبيهات.

خطوات إعادة تشغيل خادم Apache لتفعيل الإعدادات

بعد تعديل ملف php.ini، يجب إعادة تشغيل خادم Apache لتفعيل الإعدادات الجديدة، ويكون ذلك عبر الأوامر التالية حسب نظام التشغيل:

  • على أنظمة Linux:

bash
sudo systemctl restart apache2

أو

bash
sudo service apache2 restart
  • على Windows:

إعادة تشغيل خدمة Apache عبر “Services” أو إعادة تشغيل XAMPP أو WAMP حسب البيئة المستخدمة.


مراقبة حالة OPcache وأداؤه

لمراقبة فعالية OPcache، يمكن استخدام عدة طرق:

أ- استخدام صفحة PHP لعرض حالة OPcache

يمكن إنشاء ملف PHP صغير باسم opcache-status.php يحتوي على الكود التالي:

php
phpinfo(); ?>

وعند فتح الصفحة في المتصفح، ستجد قسم OPcache يعرض حالة التخزين المؤقت.

ب- استخدام سكربتات متخصصة

تتوفر سكربتات جاهزة مثل OPcache GUI تساعد على عرض إحصائيات تفصيلية حول OPcache، مثل نسبة استخدام الذاكرة، عدد السكربتات المخزنة، وعدد طلبات التخزين المؤقت.


نصائح مهمة لضبط OPcache في بيئة الإنتاج

  1. ضبط حجم الذاكرة بعناية: كلما زاد حجم الذاكرة، زادت قدرة OPcache على تخزين المزيد من السكربتات، لكنه قد يستهلك موارد أكثر، لذا يجب الموازنة بين الأداء واستهلاك الموارد.

  2. تقليل فترة التحقق في بيئة الإنتاج: لتجنب تأخير في تحميل التحديثات، يُنصح برفع قيمة opcache.revalidate_freq إلى قيم أكبر (مثلاً 60 ثانية) أو تعطيل إعادة التحقق بعد نشر التحديثات.

  3. استخدام opcache.validate_timestamps بحذر: هذا الخيار يتحكم في إعادة التحقق من الملفات. يمكن تعطيله (بوضعه على 0) في بيئة الإنتاج لتحسين الأداء، لكن مع ضرورة إعادة تشغيل Apache عند تحديث الملفات.

  4. تحديث PHP وOPcache بانتظام: التحديثات الجديدة تحسن الأداء وتصلح الثغرات، مما يحسن من استقرار النظام.

  5. مراقبة الأخطاء والتحميل: استخدام سجلات الأخطاء (logs) لمراقبة أي مشكلات قد تحدث بسبب OPcache.


علاقة OPcache بخادم Apache وتأثيرها على الأداء

خادم Apache يعمل عادة بعدة طرق منها:

  • mod_php (Apache Module): حيث يتم تحميل PHP كجزء من عملية الخادم.

  • PHP-FPM (FastCGI Process Manager): طريقة أكثر كفاءة وتعتمد على عمليات PHP منفصلة.

OPcache يعمل بكفاءة عالية مع كلا الطريقتين، لكنه يظهر أفضل أداء مع PHP-FPM بسبب عزل العمليات وتخصيص موارد أفضل. في حالة استخدام mod_php، يجب الانتباه إلى أن كل عملية Apache قد تستخدم نسخة من OPcache مما يؤثر على الذاكرة.


استخدام OPcache مع إعدادات متعددة المواقع (Virtual Hosts) في Apache

عند تشغيل أكثر من موقع على نفس خادم Apache باستخدام إعدادات Virtual Hosts، يجب:

  • ضبط إعدادات OPcache في ملف php.ini المستخدم من قبل كل موقع، إذا كانت البيئة تدعم ذلك.

  • التأكد من أن ذاكرة OPcache تكفي لتخزين ملفات جميع المواقع.

  • مراقبة أداء OPcache لكل موقع بشكل منفصل لتجنب تدهور الأداء.


تأثير OPcache على تطوير البرمجيات وعمليات النشر

عند تطوير تطبيقات PHP، قد يؤدي OPcache إلى ظهور النسخ القديمة من الملفات في المتصفح بسبب التخزين المؤقت، لذلك من المهم:

  • تعطيل OPcache أو تقليل فترة التحقق خلال بيئة التطوير.

  • إعادة تشغيل Apache بعد نشر تحديثات مهمة.

  • استخدام أدوات تطوير تدعم مسح OPcache أو إعادة تهيئته.


تقنيات مساعدة لتكامل OPcache مع أدوات التحسين الأخرى

إلى جانب OPcache، يمكن دمج تقنيات أخرى مثل:

  • Memcached أو Redis: لتخزين الجلسات والبيانات المؤقتة.

  • Proxy Cache (مثل Varnish): لتقليل الضغط على الخادم عبر تخزين استجابات HTTP.

  • Minification للملفات (CSS, JS): لتقليل حجم المحتوى المرسل للمستخدم.


خلاصة الإعدادات الأساسية لـ OPcache في php.ini

ini
zend_extension=opcache.so opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.revalidate_freq=2 opcache.enable_cli=1 opcache.validate_timestamps=1 opcache.save_comments=1

المصادر والمراجع

  1. الموقع الرسمي لـ PHP OPcache:

    https://www.php.net/manual/en/book.opcache.php

  2. مستندات Apache HTTP Server:

    https://httpd.apache.org/docs/current/


يُعد OPcache أداة حيوية لتحسين أداء تطبيقات PHP على خوادم Apache، ويعتمد نجاحها بشكل كبير على ضبط الإعدادات بشكل دقيق ومتوازن يراعي حجم المشروع وموارد الخادم، مما يحقق سرعات استجابة أفضل وتجربة مستخدم محسنة.